1. Field of the Invention
The present invention relates generally to the field of computer networking, and in particular to a method for dynamically determining a communications capability of an entity such as a client device.
2. Related Art
It is known to deploy a proxy server, or network proxy, as an intermediary between one or more client computers and an external network such as the Internet. Network proxies are described generally in Ian S. Graham, HTML Source Book: A Complete Guide to HTML 3.0 (2d ed. 1996). One common application for a network proxy is in conjunction with so-called "firewall" software to protect a LAN (local area network) from unauthorized access over the Internet. A firewall, typically installed on a gateway computer that links the LAN to the external world, restricts externally-originated TCP/IP (Transmission Control Protocol/Internet Protocol) network packets from entering the local network, thereby protecting the LAN from hazards such as unauthorized access. The firewall, however, also prevents network users from directly accessing external resources such as the World-Wide Web ("the Web"). Network proxies are often used to address this shortcoming. See Graham, at 403.
Network proxies are usually configured to have free access to both internal LAN resources and external resources, and can safely pass data back and forth across the firewall. Users may then be given safe, though indirect, access to Web resources by configuring the user's Web browser to reference the network proxy instead of external target servers. When the Web browser is used to retrieve information from outside the firewall it sends a request to the network proxy, which then completes the request and returns the result to the requesting device.
One of the side-effects of using a firewall or other type of network proxy to control a client device's access to the external world is that requests received by a content server, for example, although generated by a client device, will designate the IP (Internet Protocol) address of the network proxy. In other words, the ultimate recipient of the request has no way to determine the IP address of the client device that actually originated the request. This presents a problem for network applications capable of providing services customized according to user-specified preferences. A network device, such as a remote network proxy or content server, cannot reliably use the IP address in a received request to determine such user preferences because many users may be accessing the network device through the same local network proxy.
In view of the foregoing, there is a need for a method by which a network device can dynamically determine the communications capabilities of an entity, such as a client device, in order to, for example, elicit user-specified preferences from that entity.